#pragma once

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>

#define CMAX 8

typedef struct Node{
    char* key;
    struct Node* parent;
    struct Node** children;
    int cSize;
    int cMax;
} Node;

int GetSize(Node* root);
//获取子节点中的第一个
Node* GetFirstChild(Node* root);
//获取下一个兄弟节点
Node* GetNextSibling(Node* root);

int GetHeight(Node* root);

Node* AddNode(Node* parent, char* key);
//删除第一个子节点
void DeleteChildren(Node* parent, int index);

//前序遍历
void PreOrder(Node* root);
//后序遍历
void PostOrder(Node * root);
//层级遍历
void LevelOrder(Node* root);